package com.cskaoyan.javase.array._2memory;

/**
 * Java的JVM栈是(普通)方法调用时占用资源的内存模型
 *
 * 方法的执行顺序是: main --> test --> test2
 * 方法执行完毕的顺序是: test2 --> test --> main
 *
 * Java的方法的执行流程是如何保证的?
 * 依赖于JVM栈的"先进后出"的特点
 *
 * 局部变量为什么就仅在作用域内部(方法内部)生效呢?
 * 因为每个方法都有自己独立的方法栈帧,方法栈帧内部的局部变量,都是相互独立的
 *
 * 局部变量,它的生命周期是什么样的?(什么时候出生,什么时候销毁?)
 * 和方法的栈帧"同生共死"
 * 方法调用生效
 * 方法执行完毕就失效
 *
 * 处在JVM栈的栈的顶部的方法,是正在执行的方法,一般称它为"当前方法""当前方法栈帧"
 *
 * @since 14:50
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3};
        int[] arr2 = arr;
        int[] arr3 = {1, 2, 3};
        System.out.println(arr == arr2);
        System.out.println(arr == arr3);

        int a = 10;
        test();
    }

    public static void test() {
        int a = 10;
        test2();
    }

    public static void test2() {
        int a = 10;
    }
}
